package com.wk.dao;

import java.io.InputStream;
import java.util.Map;

import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;

/**
 * Mongodb文件操作接口. <br>
 * @author chenxiangbai <br>
 * @version 1.0.0 2014-1-7 下午4:24:16 <br>
 * @see 
 * @since JDK 1.6.0
 */
public interface IGridFsDAO {

	/**
	 * 保存文件. <br>
	 * @author chenxiangbai 2014-2-17 下午2:21:51 <br> 
	 * @param content 文件流
	 * @param filename 文件名称
	 * @return GridFs返回的文件唯一标识
	 */
	String storeFile(InputStream content, String filename);
	 
	/**
	 * 保存文件. <br>
	 * @author chenxiangbai 2014-2-17 下午2:21:51 <br> 
	 * @param content 文件流
	 * @param filename 文件名称
	 * @param contentType 文件类型
	 * @return GridFs返回的文件唯一标识
	 */
	String storeFile(InputStream content, String filename,String contentType);
	
	/**
	 * 
	 * @param  content 文件流
	 * @param filename 文件名称
	 * @param contentType 文件类型
	 * @return GridFs返回的文件唯一标识
	 */
	GridFSFile storeGridFile(InputStream content, String filename,String contentType);
	
	/**
	 * 根据GridFs返回的文件唯一标识删除文件. <br>
	 * @author chenxiangbai 2014-2-17 下午2:22:34 <br> 
	 * @param fileId 保存文件时GridFs返回的文件唯一标识
	 */
	void deleteFile(String fileId);
	
	/**
	 * 根据GridFs返回的文件唯一标识获取文件. <br>
	 * @author chenxiangbai 2014-2-17 下午2:23:03 <br> 
	 * @param fileId 保存文件时GridFs返回的文件唯一标识
	 * @return 文件流
	 */
	InputStream getInputStream(String fileId);
	/**
	 * 根据GridFs返回的文件唯一标识获取文件. <br>
	 * @author zhanghaiyong 2014-3-6  <br> 
	 * @param fileId 保存文件时GridFs返回的文件唯一标识
	 * @return GridFSDBFile对象
	 */
	GridFSDBFile getFile(String fileId);
	
	String storeFile(InputStream content, String filename,String contentType,Map<String,Object> object);

}
